1. Technical Field
This disclosure is directed to integrated circuits, and more particularly, to tracking buffers used in various types of integrated circuits.
2. Description of the Related Art
Tracking buffers are used in many applications. For example, tracking buffers can be used to track pending requests by agents of a digital system wherein the requests are awaiting arbitration. Another use of tracking buffers is to track pending responses to requests where the responses are in-flight. Information corresponding to a request may be stored in the tracking buffer when the request arrives, and may be retrieved from the tracking buffer when the request has been arbitrated or is otherwise ready to be sent and/or processed.
Simple tracking buffer designs may append to a given request all the information associated with that request and forward it to its destination. One common approach is to use a first-in, first-out buffer (FIFO) to implement a tracking buffer. A FIFO may be used in applications where strict ordering among requests is desirable.
Another approach is to assign a tracking identifier to either replace an original request identifier or to as additional information appended to the transaction. When a response returns, the tracking identifier may be used to locate the desired information. This approach may be used in applications where out-of-order responses are desirable.
Other approaches may incorporate a mixture of a FIFO and a random-access buffer structure. For example, multiple FIFOs or linked lists may be used to track different threads of transactions where the threads can be accessed in varying order. In general, a wide variety of approaches are available for tracking buffer design.